/**
 * UniRequest 请求工具入口文件
 */

import {UniRequest} from './core'
import type {UniRequestInstance, UniRequestUserConfig} from './types'

// 导出所有类型
export * from './types'
export type {UploadProgress, DownloadProgress} from './types'

// 导出工具函数
export * from './utils'

// 全局默认配置
let globalDefaultConfig: UniRequestUserConfig = {}

/**
 * 创建 UniRequest 实例
 * @param config 配置参数
 * @returns UniRequest 实例
 */
export function defineUniRequest(config?: UniRequestUserConfig): UniRequestInstance {
    const mergedConfig = {...globalDefaultConfig, ...config}
    return new UniRequest(mergedConfig)
}

/**
 * 设置全局默认配置
 * @param config 全局配置
 */
export function setUniRequestDefaultConfig(config: UniRequestUserConfig): void {
    globalDefaultConfig = {...globalDefaultConfig, ...config}
}

/**
 * 获取全局默认配置
 * @returns 全局配置
 */
export function getUniRequestDefaultConfig(): UniRequestUserConfig {
    return {...globalDefaultConfig}
}